home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / palette tools / colorsaver / colorsaver.guide (.txt) < prev    next >
Amigaguide Document  |  1996-04-07  |  23KB  |  426 lines

  1. @database ColorSaver.guide
  2. @author "Dan Fish"
  3. @(c) "Copyright 
  4.  1994 Dan Fish"
  5. @$VER: ColorSaver.guide 1.18 (11/31/94)
  6. @font topaz.font 8
  7. @node MAIN "Colorsaver Info"
  8.                @{bg highlight} +                 ColorSaver                 + @{bg back}
  9. ColorSaver is a general purpose color palette tool designed to be available
  10. at any time through the use of a hotkey.  It contains @{" Features " link
  11. FEATURES} not generally
  12. found in other palette tools
  13. @{"    Disclaimer     " link DISCLAIMER      }   @{"   Distribution    " link DISTRIBUTION    }   @{" Acknowledgements  " link ACKNOWLEDGEMENTS}
  14. @{"    Installing     " link INSTALLATION    }   @{"    Quick Test     " link QUICKTEST       }   @{"    Tool-Types     " link TOOLTYPES       }
  15. @{"     Gadgets       " link GADGETS         }   @{"  ARexx Commands   " link AREXX           }   @{" Patching Binaries " link PATCHING        }
  16. @{"     Author        " link AUTHOR          }   @{"     History       " link HISTORY         }   @{"      Bugs         " link BUGS            }
  17. @endnode
  18. @node FEATURES "ColorSaver Features"
  19. @prev MAIN
  20. @next DISCLAIMER
  21. ColorSaver has the following features:
  22.     * Implemented as a Commodity, Popup w/Hotkey
  23.     * Load/Save color palettes
  24.     * Sliders selectable between RGB/HSV
  25.     * Copy, Swap, Range, Complement Functions
  26.     * Left/right shifting of the entire palette
  27.     * Ability to permanently alter (patch) the color tables of executables
  28.       with a statically allocated color table.
  29.     * "Remembers" load/save file path's through the life of the program
  30.     * "Remembers" screen position it was last popped up to
  31.     * Runs from CLI or WorkBench
  32.     * ARexx Port with 15 commands
  33.     * PostCardWare, Includes source
  34.     * Tested with Enforcer
  35.  See Also: @{" Mis-Features " link BUGS}   @{" ToDo " LINK TODO}
  36. @endnode
  37. @node DISCLAIMER "Disclaimer"
  38. @prev FEATURES
  39. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  40.                @{bg highlight} +                 WARNING!!!!!                 + @{bg back}
  41.  *ANY* Program that directly patches executables is inherently dangerous!!
  42.  (especially those that do so without making a temporary backup until the
  43.  write completes, such as this one!!).  It is STRONGLY advised that when 
  44.  using the "WRITE" function, you do so ONLY on a backup (better yet, a backup
  45.  of your backup!).  The end-user accepts any and all liability for results
  46.  obtained through the use or misuse of this program, be it direct, indirect, 
  47.  consequential or incidental.  
  48. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  49. @endnode
  50. @node INSTALLATION "Installing ColorSaver"
  51.   Not much to it... If you always want ColorSaver available, drag its icon
  52.   into the SYS:WBStartup drawer (Might want to set the CX_POPUP=NO tooltype)
  53.   Also, if you want to save all your color palettes in the same location, 
  54.   then do one of the following:
  55.     1. Set the "PATH=" ToolType  (I.E. PATH=SYS:Prefs/Colormaps)
  56.     2. Set an environment variable for CS_PALETTES
  57.        (I.E. SetEnv CS_PALETTES SYS:Prefs/Colormaps)
  58.   (Otherwise ColorSaver will default to "SYS:Prefs" for load/save operations)
  59. @endnode
  60. @node DISTRIBUTION
  61.  Every programmer likes to know that @{fg highlight}Somebody@{fg text} at least @{fg highlight}Somewhere@{fg text}
  62.  uses their program... (plus they're also curious about how far from home
  63.  the thing has gotten).   This program is @{b}PostCardWare.@{ub} 
  64.  If you use it, all I ask is that you let @{" me " link AUTHOR} know, by 
  65.  postcard or by Email 
  66. @endnode
  67. @node TOOLTYPES "ColorSaver ToolTypes"
  68.   ColorSaver has the following command-line/tooltype template:
  69.      ColorSaver [CX_PRIORITY] [CX_POPUP] [CX_POPKEY] [CX_QUIT] [SELECT]
  70.                 [PATH] [POP_X] [POP_Y] [HSV]
  71.      CX_PRIORITY/K/N,CX_POPUP/K,CX_POPKEY/K,CX_QUIT/K,SELECT/K/N, PATH/K,
  72.      POP_X/K/N, POP_Y/K/N, HSV/S
  73.      CX_PRIORITY    Sets ColorSaver's priority in the commodities queue.
  74.             @{b}Default : 0 @{ub}
  75.      CX_POPUP        When you specify "CX_POPUP=NO" window will not be 
  76.             opened when you initially start ColorSaver
  77.             @{b}Default : YES @{ub}
  78.      CX_POPKEY        Specifies the "HotKey" to Popup the ColorSaver window.
  79.             @{b}Default : lalt ralt c @{ub}
  80.      CX_QUIT        Specifies the "HotKey" to terminate ColorSaver
  81.               @{b}Default : lalt ralt q @{ub}
  82.      SELECT        Specifies the active Palette color when ColorSaver
  83.                         is started
  84.             @{b}Default : 0 @{ub}
  85.      PATH        Specify the path for load/save operations
  86.             @{b}Default : SYS:Prefs/Presets @{ub}
  87.      POP_X        Specify the popup X position
  88.             @{b}Default : 175 @{ub}
  89.      POP_Y        Specify the popup Y position
  90.             @{b}Default : 50 @{ub}
  91.      HSV        If specified, ColorSaver will open with sliders set to 
  92.             HSV Mode.
  93.             @{b}Default : Sliders set to "RGB" mode @{ub}
  94. @endnode
  95. @node GADGETS
  96.  Gadget Descriptions:
  97.  ~~~~~~~~~~~~~~~~~~~~~~
  98.  Most of ColorSaver should be fairly Intuitive (no pun intended!) but for
  99.  the sake of completeness, here's a description of the gadgetry.
  100.  @{"    Load     " LINK LOAD_GAD}  @{"    Save     " LINK SAVE_GAD}  @{"    Write    " LINK WRITE_GAD}
  101.  @{" Scan Binary " LINK SCAN_GAD}  @{"    Cycle    " LINK CYCLE_GAD}  @{"    Copy     " LINK COPY_GAD}
  102.  @{"    Swap     " LINK SWAP_GAD}  @{"    Range    " LINK RANGE_GAD}  @{"     
  103.      " LINK SHIFTL_GAD}
  104.  @{"    
  105.       " LINK SHIFTR_GAD}  @{" Complement  " LINK COMP_GAD}  @{"   RGB/HSV   " LINK RGBHSV_GAD}
  106.  @{"      
  107.       " LINK INFO_GAD}  @{"    Okay     " LINK OKAY_GAD}  @{"     Do      " LINK DO_GAD}
  108.  @{"    UnDO     " LINK UNDO_GAD}  @{"   Cancel    " LINK CANCEL_GAD}
  109. @endnode
  110. @node LOAD_GAD "Loading colormaps..."
  111.  @{b}Load@{ub}        Load a saved colormap.  Load path/file is retained through
  112.         the life of the program.  Load directory initially defaults
  113.         to the "PATH=" tooltype (if specified) or the environment
  114.                 variable "CS_PALETTES" (if it exists) or "SYS:Prefs" if the 
  115.                 previous two are undefined.  If the number of colors in the
  116.                 file do not match the depth of the current screen, you will
  117.         be notified via requester and given a chance to "Cancel" or
  118.         "Load Anyway".
  119.          @{bg highlight} Keyboard ShortCut: @{bg back} Right-Amiga-L
  120. @endnode
  121. @node SAVE_GAD "Saving colormaps..."
  122.  @{b}Save@{ub}        Save the current screen colors to a file for subsequent
  123.         loading.  Save path/file is the same as that specified for
  124.         LOAD.  Always saves number of colors associated with depth
  125.         of the current screen. 
  126.                 @{bg highlight} Keyboard ShortCut: @{bg back} Right-Amiga-S
  127. @endnode
  128. @node WRITE_GAD "Patching Binaries..."
  129. @{b}Write@{ub}        Patch a binary file.  This gadget is disabled until a valid 
  130.         file offset (or offsets) is found using the @{"Scan Binary" LINK SCAN_GAD}
  131.         function.  A requester will appear to confirm the file name 
  132.         and offset prior to the actual write.  If this is performed 
  133.         successfully, the color palette for the executable will be 
  134.         permanently modified.  See @{"Patching Binaries" LINK PATCHING}
  135. @endnode
  136. @node SCAN_GAD "Scanning a binary for a color palette"
  137.  @{b}Scan Binary@{ub}    Scan a file for a sequence of bytes corresponding to the
  138.         values of the Reset Palette.  The Reset Palette is that which
  139.         exists at the time ColorSaver is first popped up, or after
  140.         selecting @{" DO " LINK DO_GAD}.  See @{" Patching Binaries " LINK PATCHING}
  141. @endnode
  142. @node CYCLE_GAD "Selecting a file offset..."
  143.  @{b}Cycle Gadget@{ub}    Displays valid file offsets.  This gadget is disabled until
  144.         a valid file offset (or offsets) is found using the @{"Scan Binary" LINK SCAN_GAD}
  145.         function.  In the event more than one match is found, multiple
  146.         file offsets will be listed.  The selected offset will be that 
  147.         used for a @{" WRITE " LINK WRITE_GAD} operation.  See @{" Patching Binaries " LINK PATCHING}
  148. @endnode
  149. @node COPY_GAD "Copying palette colors..."
  150.  @{b}Copy@{ub}        Copy the currently selected color to the color next selected on
  151.         the color palette.
  152. @endnode
  153. @node SWAP_GAD "Swapping palette colors..."
  154.  @{b}Swap@{ub}        Swaps the currently selected color with the color next selected
  155.         on the color palette.
  156. @endnode
  157. @node RANGE_GAD "Spreading palette colors..."
  158.  @{b}Range@{ub}        Spread the colors between the currently selected color and the 
  159.         color next selected on the color palette.  A least one inter-
  160.         vening color must exist between the two colors or this selec-
  161.         tion will have no effect.    
  162. @endnode
  163. @node SHIFTL_GAD "Shifting the entire palette left..."
  164.  @{b}
  165. @{ub}        Shift the entire color palette left. (I.E. Color 1 becomes
  166.         color 0, color 2 becomes color 1, ...etc)
  167. @endnode
  168. @node SHIFTR_GAD "Shifting the entire palette right..."
  169.  @{b}
  170. @{ub}        Shift the entire color palette right. (I.E. Color 1 becomes 
  171.         color 2, color 0 becomes color 1, ...etc)
  172. @endnode
  173. @node COMP_GAD "Complementing the currently selected color..."
  174.  @{b}Complement@{ub}    Complements the currently selected color.
  175. @endnode
  176. @node RGBHSV_GAD "Changing palette slider functions..."
  177.  @{b}RGB/HSV@{ub}    Change slider functions between RGB and HSV.  This will be 
  178.         "remembered" between subsequent ColorSaver "popup's".
  179. @endnode
  180. @node INFO_GAD "Display program info..."
  181.  @{b}
  182. @{ub}        Displays some info about the program.
  183. @endnode
  184. @node CANCEL_GAD "Cancelling changes..."
  185.  @{b}Cancel@{ub}        Cancels all color changes and restores palette in effect when 
  186.         ColorSaver was popped up.  Closes the ColorSaver window.
  187.                 @{bg highlight} Keyboard ShortCut: @{bg back} Right-Amiga-C
  188. @endnode
  189. @node UNDO_GAD "Undo'ing changes..."
  190.  @{b}UnDO@{ub}        Exactly the same as @{" CANCEL " LINK CANCEL_GAD} except window is left open for 
  191.         "further diddling".
  192.                 @{bg highlight} Keyboard ShortCut: @{bg back} Right-Amiga-U
  193. @endnode
  194. @node OKAY_GAD "Accepting changes..."
  195.  @{b}Okay@{ub}        Accepts the current color settings and closes the ColorSaver
  196.         window.
  197.                 @{bg highlight} Keyboard ShortCut: @{bg back} Right-Amiga-O
  198. @endnode
  199. @node DO_GAD "Implementing changes..."
  200.  @{b}Do@{ub}        Exactly the same as @{" OKAY " LINK OKAY_GAD} except ColorSaver window is left 
  201.         open.  Used mainly to force the current palette into the reset
  202.         palette without having to close and re-open the window.
  203. @endnode
  204. @node AREXX "ARexx Commands"
  205.  ARexx Commands:
  206.  ~~~~~~~~~~~~~~~
  207.  The ARexx command set is still minimal, error checking is near nil, both should 
  208.  improve with the next release.  Some example scripts have been supplied that show
  209.  most of the trickier functions.  If you come up with some really innovative
  210.  Arexx uses of ColorSaver, I'd be interested in hearing about them and will include 
  211.  them in the next release (Along with credits of course;).
  212.  Note: All screen references refer to IntuitionBase->FirstScreen.  At 
  213.        present, there is no way to specify the screen name.
  214.     SHOW   -- Popup the ColorSaver window
  215.     HIDE   -- Hides the ColorSaver window
  216.     CANCEL -- Cancels any color changes since the window was popped up or 
  217.           since a STOREPALETTE operation.
  218.     QUIT   -- Kills ColorSaver
  219.     LOAD <Filename> -- Loads a palette.  If "Filename" does not contain
  220.               a path, the path will default to that specified in an 
  221.           environment variable or tooltype.  See the @{" Load " LINK LOAD_GAD} gadget
  222.           Note: Unlike with the "Load" gadget, the ARexx version of 
  223.                         LOAD will give you no notification if the colors in 
  224.             the file do not match the screen depth.  It will 
  225.             simply do a "Load Anyway".
  226.     SAVE <Filename> -- Saves the screen palette.  Always saves the number
  227.                   of colors associated with the depth of the screen.  If "Filename"
  228.                   does not contain a path, the path will default to that specified
  229.                   in an environment variable or tooltype.  See the @{" Save " LINK SAVE_GAD} gadget
  230.     STOREPALETTE --  Saves the current screen palette which is restored with
  231.                          a CANCEL operation.
  232.     SHIFTL -- Shift the entire color palette left. (I.E. Color 1 becomes
  233.         color 0, color 2 becomes color 1, ...etc)  See the @{" 
  234.  " LINK SHIFTL_GAD} gadget
  235.     SHIFTR -- Shift the entire color palette left. (I.E. Color 1 becomes
  236.         color 2, color 2 becomes color 3, ...etc)  See the @{" 
  237.  " LINK SHIFTR_GAD} gadget
  238.     RGBMODE  -- Set sliders to RGB mode.  See  @{" RGB/HSV " LINK RGBHSV_GAD}
  239.     HSVMODE  -- Set sliders to HSV mode.  See  @{" RGB/HSV " LINK RGBHSV_GAD}  
  240.                     Note: at present there is no way to actually set specific HSV
  241.                           values from ARexx.  All values must be specified in
  242.                           RGB using the SETRGB command.  If HSVMODE is selected
  243.                           however, and the ColorSaver window is open, the HSV
  244.                           sliders will be set to the correct values.
  245.     NUMCOLORS -- Returns in the ARexx RESULT variable, the number of colors 
  246.              (corresponding to the depth of) the screen.
  247.     SELECT <#> -- Selects color specified by <#> as the active color. Where:
  248.                       <#> = 0 to "NUMCOLORS-1"
  249.     GETRGB -- Returns in the ARexx RESULT variable, 3 numbers specifying
  250.                   the current R G B Values of the active color for the screen
  251.     SETRGB [C=#] [R=#] [G=#] [B=#] -- Set the RGB values for a specific color
  252.                 register, where:
  253.             C = (Color) 0 to "NUMCOLORS-1"
  254.             R = (Red)   0 to 15
  255.             G = (Green) 0 to 15
  256.                         B = (Blue)  0 to 15
  257.         Parameters not specified will retain their current values.
  258. @endnode
  259. @node Author "WhoDunnit..."
  260.  Please send bug reports, suggestions, comments and/or PostCards to:
  261.     Dan Fish
  262.     815 E. Bethany #B135
  263.     Phoenix, AZ.  85014
  264.     Email: daf@daffy.amigalib.com       (preferred)
  265.                daf@fishpond.amigalib.com    (if above undeliverable)
  266. @endnode
  267. @node PATCHING "Patching Binaries
  268.  Ever have this happen to you?  You start this brand new program and say:
  269.  "Yeah, this is nice, but the person's choice of colors is really awful!"  
  270.  Everybody has different tastes in colors, so what do you do?  Well, if you're
  271.  lucky, the programmer was thoughtful enough to put in a palette for you to 
  272.  change them with, and if you're *REAL* lucky he was even kind enough to allow
  273.  you to save them somewhere as the default! (I must at admit, many programs
  274.  are at least getting much better about including a palette tool.. :-)
  275.  So... no palette tool, Huh?  Well, that's where ColorSaver can @{" sometimes " link SOMETIMES} give 
  276.  you a hand... Just run your program, popup ColorSaver, Click on the "Scan 
  277.  Binary" gadget and select the filename for your program.  ColorSaver will
  278.  attempt to locate the "palette" inside the binary.  If it finds one (or more)
  279.  it will let you know, and will activate the "Write" and "Offset" gadgets.
  280.  Now all you need to do is change the colors to your liking and click on 
  281.  "Write".  Poof!  For ever-after when you run that program, it will have the 
  282.  colors you selected.
  283.  As proof that this really does work, I've included a small "test" program
  284.  called "ColorTest".  Simply run ColorTest, popup ColorSaver, use it to scan
  285.  ColorTest and it should come back with (1) color table match at offset 4196.
  286.  Change the colors to your liking, "Write" them, select Cancel or Okay from  
  287.  ColorSaver, (Doesn't matter which, you've already written the colors) and 
  288.  then exit ColorTest.  Now when you run ColorTest again, it will have the
  289.  colors you selected.   
  290.  Magic, Huh?  Naw, not really. I've been doing the same thing for years with a
  291.  hex editor, ColorSaver just makes it much easier.  Note that I said earlier
  292.  that "ColorSaver can @{" sometimes " link SOMETIMES} help..."
  293. @endnode
  294. @node SOMETIMES "Well.... SOMETIMES it works!"
  295.   And now the bad news... this won't work with all programs...
  296.  Generally, the table must be statically allocated in the source.  I.E.
  297.  something like:
  298.     UWORD colortable[]     = { 0x000, 0xf44, 0x4f4, 0x44f };
  299.  When you run your program and pop up ColorSaver, it gets the current palette
  300.  and when you do a "Scan Binary" it looks for that sequence of bytes in the 
  301.  file and will replace them with the colors you choose.
  302.  If a program uses individual calls to SetRGB4(), dynamic allocation, does
  303.  color cycling or other strange things, this won't work.  I'd estimate I've
  304.  been able to sucessfully alter the palettes of somewhere between 1/3 and 1/2
  305.  the binaries I've tried it on.
  306.  It is possible that there could be more than one sequence of matching bytes
  307.  (particularly with 1 and 2 bitplane programs.  If this is the case, then 
  308.  (for now anyway) you'll have to "roll the dice" and write to one of the 
  309.  locations.  @{fg highlight} BE ABSOLUTELY, POSITIVELY SURE YOU DO THIS ONLY ON A BACKUP OF 
  310. A BACKUP OF A BACKUP OF THE PROGRAM!!! @{fg text} (hope you read the @{" Disclaimer " link DISCLAIMER})
  311.  If you then run your program and get a free trip to India, you'll know you
  312.  selected the wrong one!  (Perserverance is the key here!).
  313.  Personally I've only run across this a couple of times, and I think they
  314.  were both 1 bitplane black & white screens.
  315.  Note that you are not really limited to scanning and writing to executables,
  316.  you can also scan binary data and/or configuration files. (or even the color
  317.  palettes saved by ColorSaver!)
  318. @endnode
  319. @node HISTORY "ColorSaver History..."
  320.  31-Nov-94  Version 1.18
  321.         - ARexx improvements
  322.         - Added custom pointers        
  323.             - Added Close/Hide Requester upon clicking the close gadget
  324.  25-Aug-94  Version 1.10
  325.         - Code getting rather large for one file, split into several
  326.           smaller files
  327.             - Converted/updated documentation to AmigaGuide format
  328.         
  329.  18-Feb-94  Version 1.02
  330.             - Minor code changes not affecting operation
  331.  19-Sep-93  Version  1.0
  332.             (Very few bug reports/suggestions, so found my own...)
  333.             (Does anybody but me ACTUALLY use this thing??)
  334.             - Fixed irritation that caused "Complement" not to 
  335.           work under OS3.0
  336.             - Cleaned up the source a bit.
  337.             - Added the following tooltypes:
  338.                 SELECT -- Specify the active color on startup
  339.                 PATH   -- Specify the load/save file path
  340.                 POP_X  -- Specify the popup X position
  341.                 POP_Y  -- Specify the popup Y position
  342.         - Added rudimentary ARexx port
  343.  06-Jun-93  Version 0.86
  344.             - Bug Fixed, Called UnlockPubScreen() even though I 
  345.           never called LockPubScreen()
  346.         - Bug Fixed, If "Load Anyway" selected when loading
  347.               colors of < depth of frontscreen, will now only
  348.               change the actual number of colors loaded.
  349.  05-Jan-93  Version 0.84
  350.             - Alpha Release  (First Public Release)
  351. @endnode
  352. @node ACKNOWLEDGEMENTS
  353.  Acknowledgements:
  354.  ~~~~~~~~~~~~~~~~~~
  355.     * Many thanks to Jan van den Baard for his excellent "GadToolsBox"
  356.       which makes the task of writing programs such as this so much 
  357.       easier, and for providing the well documented, structured source
  358.       for JBSpool (FF656).  (Most of the commodity stuff for ColorSaver
  359.       was yanked out of JBSpool, and I hope he doesn't mind me including 
  360.       his link library "dcbacks.lib", though I could find no limitations 
  361.       to distribution in his documentation).
  362.     * Also many thanks to Matt Dillon and the folks at Obvious 
  363.       Implementations Corp. for the excellent DICE environment.
  364.     * And of course, thanks to Fred, his library, and all the hundreds of
  365.       talented people who have submitted very high quality programs, with-
  366.       out which the Amiga might very well still be just "An Interesting 
  367.       Curiosity" ....as was the Atari ST!
  368. @endnode
  369. @node QUICKTEST
  370. For those of you who hate long-winded documentation, (don't we all??) here's  
  371. some quick exercises to show off ColorSaver.  (Note: Use LAlt-RAlt-C to 
  372. "popup" ColorSaver)
  373.    1. Double-Click on ColorSaver, select "Load", you should have a choice of 
  374.       several palettes, Try loading a couple...  You can also fiddle with the
  375.       colors, then save your own palette.  (Probably have to save it somewhere
  376.       else, or write-enable the disk!)
  377.    2. When you get tired of that, you can try out ColorSaver's binary file 
  378.       patching ability.
  379.       a.) Double-Click on "ColorTest" and note the colors (black & white with
  380.       a single red bar)
  381.       b.) Popup ColorSaver and adjust the colors until you like them.
  382.       c.) Select "Scan-Binary"
  383.       d.) Select "ColorTest" from the file requester.
  384.       e.) ColorSaver should respond that it found one Color Table match
  385.       (Cycle gadget should display offset of 4196)
  386.       f.) Select "Write" and confirm the requester (probably have to 
  387.       write-enable the disk if you haven't copied all the files somewhere)
  388.       g.) Hide ColorSaver (select "Cancel")
  389.       h.) Exit ColorTest
  390.       Now run ColorTest again and note that the colors have been permanently 
  391.       and forever changed to the ones you selected.  (Or at least until you 
  392.       run ColorSaver again!)
  393.    3. Try out the various supplied ARexx scripts.
  394. @endnode
  395.       
  396. @node BUGS "Notes (and other Bugs...;(
  397.  The following are known ...um, er, Peculiarities!
  398.     * Does not properly handle HAM palettes
  399.     * Loading "non-palette" files should not be fatal, but will result
  400.       in "bizarre" color schemes (that will likely include the pointer)
  401.     * Does not use LockPubScreen(), Had problems with this, instead
  402.       ColorSaver pops up on IntuitionBase->FirstScreen, thus you should
  403.       avoid closing a screen that you have ColorSaver popped up on.
  404.       (Close ColorSaver window FIRST!)
  405.     * Popping up the palette on some screens with unusual color settings
  406.       may render ColorSaver nearly (or totally) invisible.  
  407.     * If something other than ColorSaver is responsible for changing the 
  408.       colors of a screen, (I.E. another palette tool, system calls, etc.),
  409.       the sliders will become "out of sync" with the current screen colors,
  410.       Clicking on a slider will cause that color to "jump back" to what 
  411.       ColorSaver thinks it should be.  You can avoid this effect by making
  412.       a palette selection.  This will cause ColorSaver to reset the 
  413.       sliders to the CURRENT screen colors.  (This effect is probably
  414.       normal for all palette tools). 
  415. @endnode
  416. @node TODO "Future plans..."
  417.  Some possible enhancements:
  418.     * Localization of the Gadgetry
  419.     * Enhance ARexx command set, better error checking
  420.     * Screen selection by name
  421.     * Recognize/Load/Save SYS:Prefs/Presets type palettes
  422.     * Better handling of palettes with a large number of colors,
  423.       (I.E. With 128-256 colors, you currently need a magnifying
  424.            glass to select the proper color...;)
  425. @endnode
  426.